
package com.sun.showcase.biz.mall.service.impl;
import java.util.ArrayList;
import java.util.List;

import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import com.github.pagehelper.Page;
import com.github.pagehelper.PageHelper;
import com.sun.showcase.biz.mall.dao.SkuAttributeValueDao;
import com.sun.showcase.biz.mall.service.SkuAttributeValueService;
import com.sun.showcase.client.domain.mall.SkuAttributeValue;
import com.sun.showcase.client.query.mall.SkuAttributeValueQuery;
import com.sun.showcase.pojo.DataGrid;
import com.sun.showcase.pojo.Pager;
import com.sun.showcase.utils.UuidUtil;
@Service("skuAttributeValueService")
@Transactional
public class SkuAttributeValueServiceImpl implements SkuAttributeValueService{
	@Autowired
	private SkuAttributeValueDao skuAttributeValueDao;
	
	public void setSkuAttributeValueDao(SkuAttributeValueDao dao) {
		this.skuAttributeValueDao = dao;
	}

	public DataGrid datagrid(SkuAttributeValueQuery skuAttributeValueQuery) {
		DataGrid j = new DataGrid();
		Pager<SkuAttributeValue> pager  = find(skuAttributeValueQuery);
		j.setRows(getQuerysFromEntitys(pager.getRecords()));
		j.setTotal(pager.getTotalRecords());
		return j;
	}

	private List<SkuAttributeValueQuery> getQuerysFromEntitys(List<SkuAttributeValue> skuAttributeValues) {
		List<SkuAttributeValueQuery> skuAttributeValueQuerys = new ArrayList<SkuAttributeValueQuery>();
		if (skuAttributeValues != null && skuAttributeValues.size() > 0) {
			for (SkuAttributeValue tb : skuAttributeValues) {
				SkuAttributeValueQuery b = new SkuAttributeValueQuery();
				BeanUtils.copyProperties(tb, b);
				skuAttributeValueQuerys.add(b);
			}
		}
		return skuAttributeValueQuerys;
	}

	private Pager<SkuAttributeValue> find(SkuAttributeValueQuery skuAttributeValueQuery) {
		Page<SkuAttributeValue> page = PageHelper.startPage(skuAttributeValueQuery.getPage().intValue(), skuAttributeValueQuery.getRows().intValue());
		List<SkuAttributeValue> list = skuAttributeValueDao.findList(skuAttributeValueQuery);
		Pager<SkuAttributeValue> pager = new Pager<SkuAttributeValue>();
		pager.setRecords(list);
		pager.setTotalRecords(page.getTotal());
		return  pager;
		
	}
	


	public SkuAttributeValue add(SkuAttributeValueQuery skuAttributeValueQuery) {
		SkuAttributeValue t = new SkuAttributeValue();
		BeanUtils.copyProperties(skuAttributeValueQuery, t);
	    t.setId(UuidUtil.get32UUID());
		skuAttributeValueDao.save(t);
		skuAttributeValueQuery.setId(t.getId());
		return t;
		
	}

	public void update(SkuAttributeValueQuery skuAttributeValueQuery) {
		SkuAttributeValue t = skuAttributeValueDao.getById(skuAttributeValueQuery.getId());
	    if(t != null) {
	    	BeanUtils.copyProperties(skuAttributeValueQuery, t);
	    	skuAttributeValueDao.update(t);
		}
	}
	
	/**
	 * 根据条件更新部分字段   新建一个query封装需要更新的字段
	 * searchMap封装更新条件
	 * */
	public void updatePart(SkuAttributeValueQuery skuAttributeValueQuery) {
	    skuAttributeValueDao.updatePart(skuAttributeValueQuery);
	}

	public void delete(java.lang.String[] ids) {
		skuAttributeValueDao.deleteAc(ids);
	}
	
	//逻辑删除 更新状态位
	public void deletePt(java.lang.String[] ids) {
		skuAttributeValueDao.deletePt(ids);
	}

	public SkuAttributeValue get(SkuAttributeValueQuery skuAttributeValueQuery) {
		return skuAttributeValueDao.getById(skuAttributeValueQuery.getId());
	}

	public SkuAttributeValue get(String id) {
		return skuAttributeValueDao.getById(id);
	}

	
	public List<SkuAttributeValueQuery> listAll(SkuAttributeValueQuery skuAttributeValueQuery) {
	    List<SkuAttributeValue> list = skuAttributeValueDao.findList(skuAttributeValueQuery);
		List<SkuAttributeValueQuery> listQuery =getQuerysFromEntitys(list) ;
		return listQuery;
	}

	@Override
	public void deleteByAttributeId(String skuArributeId) {
		skuAttributeValueDao.deleteByAttributeId(skuArributeId);
	}

	@Override
	public void deleteNotInIds(List<String> ids,String goodsId) {

		skuAttributeValueDao.deleteNotInIds(ids,goodsId);
		
	}
	
	
}
